home *** CD-ROM | disk | FTP | other *** search
/ Wonky Flux Batch 2019 02 / Wonky_Flux_Batch_2019-02.zip / Wonky Flux Batch 2019-02 / 024 - Big U Macroworks.dsk / ANALYST.bas < prev    next >
BASIC Source File  |  2019-02-16  |  10KB  |  124 lines

  1. 4  REM <CTRL-M><CTRL-M>ANALYST<CTRL-M><CTRL-M>COPYRIGHT 1986<CTRL-M>BY RANDY BRANDT<CTRL-M>
  2. 5  ONERR  GOTO 10000
  3. 6  POKE 48891, PEEK(116): LOMEM: 31488
  4. 8  DIM WD$(1):WD$(0) = "B":WD$(1) = "A":WD = 1:SO = 1: DIM SO$(1):SO$(0) = "Unsorted":SO$(1) = "Sorted":A1 =  PEEK(1014):A2 =  PEEK(1015):SD = 48700:AD =  PEEK(SD +1):AS =  PEEK(SD)
  5. 10 SL = 1:DS = 6:DN = 1:PS$ =  CHR$(9) +"80N"
  6. 12 NC = 3:NS = 2:D$ =  CHR$(4):Q$ =  CHR$(34):CL =  -868:CS =  -958: DIM B$(5),M$(5): DIM LI$(27):C8 = 1403: DIM FI$(50):BS = 48855: DIM Q$(2),Q(2):Q(0) = 6:Q$(0) = "M":Q$(1) = "A":Q(1) = 25:Q(2) = 47:Q$(2) = "Esc"
  7. 15 I = 5:H = 9:V = 7:C = 25: PRINT D$"PREFIX": INPUT PF$:OP$ = "/": FOR I = 2 TO  LEN(PF$) -1: IF  MID$ (PF$,I,1) = "/"  THEN OP$ = PF$: GOTO 20
  8. 17  NEXT : HOME 
  9. 20  PRINT D$"-MENUS"
  10. 25  PRINT D$"-ANALYST.CODE"
  11. 50  PRINT  CHR$(4)"PR#3":NA$ = "None"
  12. 51 ITEMS = 5: DIM A$(IT): FOR I = 0 TO ITEMS: READ A$(I): NEXT : FOR I = 0 TO 5: READ B$(I): NEXT :B$(3) = "Slot " + STR$(DS) +" Drive " + STR$(DN): FOR I = 0 TO 3: READ M$(I): NEXT 
  13. 60  VTAB 1: PRINT : VTAB 1: PRINT "File: "NA$;: HTAB 31: PRINT "  ANALYST MENU";: CALL CL: POKE C8,72: PRINT "Analyst";: CALL CL: PRINT : & RPT,223,79
  14. 80  VTAB 22: PRINT : & RPT,223,79: GOSUB 9500
  15. 85  & BOX,M$(0),4,3,14: CALL CL: PRINT : CALL CL: PRINT : CALL CL: PRINT : CALL CL
  16. 90  VTAB 10: PRINT : HTAB 38: PRINT "(Now "WD$(WD)")": PRINT : HTAB 38: PRINT "(Now "SO$(SO)")": PRINT : HTAB 38: PRINT "(Now "SL")"
  17. 110  & MENU,A$(0,)IT,1,H,V,C
  18. 120 X =  PEEK(0): IF X < >IT +1  THEN 200
  19. 130 QO = 2
  20. 140  VTAB 23: PRINT : PRINT "Press  M  for Main.Menu,  A  for Applesoft, or  Esc  to continue";: CALL CL: POKE C8,Q(QO): INVERSE : PRINT " "Q$(QO)" ";: NORMAL 
  21. 150  & KEY,33,24:X =  PEEK(0): IF X = 27  OR (X = 13  AND QO = 2)  THEN  GOSUB 9500: GOTO 110
  22. 160  IF X = 77  OR X = 109  OR (X = 13  AND QO = 0)  THEN X = 77: GOTO 180
  23. 170  IF X = 65  OR X = 97  OR (X = 13  AND QO = 1)  THEN X = 65: GOTO 180
  24. 172  IF X = 8  THEN QO = QO -1: IF QO =  -1  THEN QO = 2
  25. 174  IF X = 21  THEN QO = QO +1: IF QO = 3  THEN QO = 0
  26. 175  IF   NOT (X = 8  OR X = 21)  THEN  & BEEP: GOTO 150
  27. 177  GOTO 140
  28. 180  GOSUB 9800
  29. 185  IF X = 77  THEN  VTAB 21: PRINT D$"-MAIN.MENU"
  30. 190  HOME : PRINT  CHR$(21): PRINT : PRINT "TYPE "Q$"RUN"Q$" TO RESTART.": END 
  31. 200  ON X GOTO 1000,2000,3000,4000,5000: & BEEP: GOTO 110
  32. 1000  VTAB 1: HTAB 30: PRINT "  ANALYZE A FILE   ";: GOSUB 9450
  33. 1010  & BOX,M$(2),7,5,13: CALL CL: PRINT : CALL CL: PRINT : CALL CL
  34. 1020  IF NA$ = "None"  THEN  VTAB 11: PRINT : HTAB 14: PRINT "You must load a file first!": & BEEP: & KEY,C,24: GOTO 60
  35. 1030  VTAB 14: PRINT : HTAB 17: PRINT "Word Definition: "WD$(WD): HTAB 17: PRINT "Printer Slot:    "SL: HTAB 17: PRINT "Display Order:   ";: PRINT SO$(SO)
  36. 1050  & MENU,B$(0),1,1,12,10,25:X =  PEEK(0): IF X = 27  THEN FL = 0: GOTO 60
  37. 1060  IF X >2  THEN  & BEEP: GOTO 1050
  38. 1090  IF FL = 0  THEN  VTAB 17: PRINT : HTAB 17: PRINT "Words Analyzed:";: POKE 220,SO: & #WD +TY:FL = 1:TY = 0
  39. 1102  VTAB 23: PRINT : PRINT "Press Return to view results; start/stop display by pressing any key";: CALL CL: & KEY,35,24: IF  PEEK(0) = 27  THEN 60
  40. 1105  IF X = 2  THEN  PRINT D$"PR#"SL: PRINT PS$: PRINT "FILE: "NA$: & $: PRINT  CHR$(12): PRINT D$"PR#3": GOTO 60
  41. 1110  HOME : PRINT "FILE: "NA$: & $: VTAB 23: PRINT : PRINT "Press Return";: & KEY,7,24: HOME : GOTO 60
  42. 2000  VTAB 1: HTAB 31: PRINT "    LOAD A FILE   ";: GOSUB 9450
  43. 2010  & BOX,M$(1),7,5,13: CALL CL: PRINT : CALL CL: PRINT : CALL CL
  44. 2015  GOSUB 9450
  45. 2020  VTAB 7: PRINT : HTAB 13: PRINT "Where is the file you want to analyze?": HTAB 13: PRINT "Select (1) when 'Current Directory' is correct.": PRINT : POKE C8,35: PRINT " ";PF$;: PRINT  SPC( 30 - LEN(PF$))
  46. 2030  & MENU,B$(2),5,1,12,11,25:X =  PEEK(0): IF X = 27 GOTO 60
  47. 2040  ON X GOTO 2190,2180,2050,2170: & BEEP: GOTO 2030
  48. 2050  VTAB 12: PRINT : HTAB 21: INVERSE : PRINT " "DS" ";: NORMAL : PRINT : GOSUB 9700
  49. 2060  & KEY,32,24:X =  PEEK(0): IF X = 27  THEN  GOSUB 9500: GOTO 2030
  50. 2070  IF X = 10  THEN DS = DS -1: IF DS = 0  THEN DS = 7
  51. 2080  IF X = 11  THEN DS = DS +1: IF DS = 8  THEN DS = 1
  52. 2085  IF X >48  AND X <56  THEN DS = X -48:X = 13
  53. 2090  IF X = 13  OR X = 21  THEN B$(3) = "Slot " + STR$(DS) +" Drive " + STR$(DN): VTAB 12: PRINT : HTAB 17: PRINT B$(3)" ";: GOTO 2120
  54. 2100  IF X = 10  OR X = 11  THEN 2050
  55. 2110  & BEEP: GOTO 2060
  56. 2120  VTAB 12: PRINT : HTAB 29: INVERSE : PRINT " "DN" ";: NORMAL : PRINT 
  57. 2130  & KEY,32,24:X =  PEEK(0): IF X = 27  OR X = 8  THEN  VTAB 12: PRINT : HTAB 17: PRINT B$(3)" ";: GOTO 2050
  58. 2140  IF X = 10  OR X = 11  THEN DN = 3 -DN: GOTO 2120
  59. 2145  IF X >48  AND X <51  THEN DN = X -48:X = 13
  60. 2150  IF X = 13  THEN  GOSUB 9500:B$(3) = "Slot " + STR$(DS) +" Drive " + STR$(DN): VTAB 12: PRINT : HTAB 17: PRINT B$(3)" ";: GOTO 2180
  61. 2160  & BEEP: GOTO 2130
  62. 2170  VTAB 23: PRINT : PRINT "Type new pathname: /";: CALL CL: &  INPUT X$: ON X$ = "" GOTO 2015:P2$ = "/" +X$ +"/": PRINT D$"PREFIX"P2$:PF$ = P2$: GOTO 2015
  63. 2180  VTAB 22: PRINT D$"PREFIX,S"DS",D"DN: PRINT D$"PREFIX": INPUT PF$: GOTO 2020
  64. 2190 FL = 0: & BOX,M$(1),7,5,13: VTAB 10: PRINT : HTAB 17: PRINT "Reading directory...":CO = 1
  65. 2200  VTAB 22: PRINT D$"OPEN"PF$",TDIR": VTAB 22: PRINT D$"READ"PF$: INPUT X$: INPUT X$
  66. 2210  INPUT FI$(CO):CX = CO:X$ =  MID$ (FI$(CO),18,3): IF (X$ = "TXT"  OR X$ = "AWP")  AND  MID$ (FI$(CO),26,3) <" 31"  THEN CO = CO +1
  67. 2220  IF  LEFT$(FI$(CX),12) < >"BLOCKS FREE:"  THEN FI$(CX) =  MID$ (FI$(CX),2,15) + MID$ (FI$(CX),17,5) + MID$ (FI$(CX),25,15): GOTO 2210
  68. 2230 BF$ =  MID$ (FI$(CX),13,5):BF =  VAL(BF$):CO = CO -1: PRINT D$"CLOSE"
  69. 2235  IF CO = 0  THEN  & BEEP: VTAB 10: PRINT : HTAB 17: PRINT "No useable TXT or AWP files in "PF$: & KEY,25,24: GOTO 2000
  70. 2270  VTAB 1: POKE C8,56: PRINT "   Escape: Load a File";: CALL CL: VTAB 23: PRINT : PRINT "Use arrow keys to highlight file, then press Return ";: CALL CS
  71. 2280  VTAB 7: PRINT : HTAB 13: PRINT "Disk Volume "PF$" has "BF" blocks available"
  72. 2290  HTAB 14: PRINT "Name           Type Blocks   Date": HTAB 13: & RPT,189,37
  73. 2300  & SHOW,FI$(1),CO,8,12,11,27:X =  PEEK(0): IF X = 27 GOTO 2000
  74. 2350 NA$ =  LEFT$(FI$(X),15):TY = 0:TYP$ =  MID$ (FI$(X),17,3): IF TY$ = "AWP"  THEN TY$ = "AWP,B300":TY = 2
  75. 2360  PRINT D$"BLOAD"PF$;NA$",A$4000,T"TY$:EL = ( PEEK(BS) +256 * PEEK(BS +1)) +( PEEK(BS +2) +256 * PEEK(BS +3)): POKE EL,0: GOTO 60
  76. 3000  VTAB 1: HTAB 31: PRINT "  WORD DEFINITION ";: GOSUB 9450
  77. 3010  & BOX,M$(3),7,5,13: CALL CL: PRINT : CALL CL: PRINT : CALL CL
  78. 3020  VTAB 8: PRINT : HTAB 14: PRINT "ANALYST lets you define a word as one of the following:": PRINT 
  79. 3030  HTAB 14: PRINT "A) a group of characters beginning with a number 0-9,"
  80. 3040  HTAB 14: PRINT "   or a letter A-Z (Examples: test, 100, 128K)": PRINT 
  81. 3050  HTAB 14: PRINT "B) a group of characters beginning with a letter A-Z"
  82. 3060  HTAB 14: PRINT "   (Examples: test, A1, BASIC.SYSTEM)"
  83. 3070  VTAB 16: PRINT : HTAB 14: PRINT "Current Word Definition: ";: INVERSE : PRINT " "WD$(WD)" ": NORMAL 
  84. 3080  GOSUB 9700
  85. 3090  & KEY,32,24:X =  PEEK(0): IF X = 27  OR X = 13  THEN 60
  86. 3100  IF X = 10  OR X = 11  THEN WD = 1 -WD:FL = 0: GOTO 3070
  87. 3110  & BEEP: GOTO 3090
  88. 4000  VTAB 1: HTAB 30: PRINT " CHANGE DISPLAY ORDER";: GOSUB 9450
  89. 4010  & BOX,A$(3),7,5,13: CALL CL: PRINT : CALL CL: PRINT : CALL CL
  90. 4020  GOSUB 9700
  91. 4040  VTAB 11: PRINT : HTAB 13: PRINT "Current Display Order: ";: INVERSE : PRINT " ";SO$(SO)" ";: NORMAL : PRINT "  "
  92. 4060  & KEY,32,24:X =  PEEK(0): IF X = 27  OR X = 13  THEN  GOSUB 9500: GOTO 60
  93. 4070  IF X = 10  OR X = 11  THEN SO = 1 -SO:FL = 0: GOTO 4040
  94. 4080  & BEEP: GOTO 4060
  95. 5000  VTAB 1: HTAB 30: PRINT " CHANGE PRINTER SLOT ";: GOSUB 9450
  96. 5010  & BOX,A$(4),7,5,13: CALL CL: PRINT : CALL CL: PRINT : CALL CL
  97. 5020  GOSUB 9700
  98. 5030  VTAB 8: PRINT : HTAB 13: PRINT "Printers are usually in slot 1 or slot 2."
  99. 5040  VTAB 11: PRINT : HTAB 13: PRINT "Current Slot:"
  100. 5050  VTAB 11: PRINT : HTAB 31: INVERSE : PRINT " "SL" ";: NORMAL : PRINT 
  101. 5060  & KEY,32,24:X =  PEEK(0): IF X = 27  THEN  GOSUB 9500: GOTO 60
  102. 5070  IF X = 10  THEN SL = SL -1: IF SL = 0  THEN SL = 7
  103. 5080  IF X = 11  THEN SL = SL +1: IF SL = 8  THEN SL = 1
  104. 5090  IF X = 13  THEN  GOSUB 9500: GOTO 60
  105. 5100  IF X = 10  OR X = 11  THEN  GOTO 5050
  106. 5110  & BEEP: GOTO 5060
  107. 9450  VTAB 1: POKE C8,59: PRINT "Escape: Analyst Menu";: CALL CL
  108. 9500  VTAB 23: PRINT : PRINT "Type number or use arrow keys, then press Return           See Manual for Help ";: RETURN 
  109. 9700  VTAB 23: PRINT : PRINT "Use up/down arrow keys to change value; press Return when done";: CALL CL: RETURN 
  110. 9800  PRINT D$"PREFIX/": IF OP$ < >"/"  THEN  PRINT D$"PREFIX"OP$
  111. 9810  POKE 1014,A1: POKE 1015,A2: CALL 48888: POKE SD,AS: POKE SD +1,AD: RETURN 
  112. 10000 ER =  PEEK(222):EL =  PEEK(218) +256 * PEEK(219)
  113. 10005  IF ER = 77  OR ER = 12  THEN  HOME : PRINT "<CTRL-G>OUT OF MEMORY, LINE "EL"; REBOOT": END 
  114. 10015  IF EL = 15  THEN  PRINT "<CTRL-G>A disk must be in the drive": END 
  115. 10025  IF EL = 20  THEN  PRINT "<CTRL-G>Can't find MENUS": END 
  116. 10035  IF EL = 25  THEN  PRINT "<CTRL-G>Can't find ANALYST.CODE": END 
  117. 10038  IF EL = 2360  THEN  & BEEP: VTAB 23: PRINT : PRINT "Unable to load file; press Return";:NA$ = "None": CALL CL: & KEY,18,24: GOTO 2000: GOTO 2360
  118. 10040  IF EL = 9800  THEN  & BEEP: VTAB 23: PRINT : PRINT "Insert MacroWorks disk and press Return";: CALL CL: & KEY,21,24: GOTO 9800
  119. 10050  IF EL = 185  THEN  VTAB 23: PRINT : PRINT "Insert MacroWorks disk and press Return ";: CALL CL: GET X$:X = 77: ON X$ < > CHR$(27) GOTO 185: RUN 
  120. 10100  IF EL >2000  AND EL <3000  THEN  VTAB 20: PRINT : & BEEP: VTAB 23: PRINT : PRINT "Unable to find directory; press Return";: CALL CL: & KEY,20,24: GOSUB 9500: GOTO 2020
  121. 11000  POKE 216,0: RESUME 
  122. 15000  DATA  "Analyze the Current File","Load a File","Change Word Definition","Change Display Order","Change Printer Slot","Quit" : REM  A$
  123. 15500  DATA  "Show Results on Screen","Send Results to Printer","Current Directory:","S","Another Slot and Drive","Another Pathname": REM  B$
  124. 16000  DATA  "Analyst Menu","Load a File","Analyze a File","Word Definition" : REM  M$